GtkThemingEngine: Use border-image to render borders if an image is available.
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 24 Sep 2010 20:08:49 +0000 (22:08 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:38:16 +0000 (15:38 +0100)
gtk/gtkthemingengine.c

index 5a2285aad774aa4af60fadf181fe5c2fb067f0f5..a5241c3b50a47f9740f43246ca43ce35034933bc 100644 (file)
@@ -26,6 +26,7 @@
 #include <gtk/gtkstylecontext.h>
 #include <gtk/gtkintl.h>
 
+#include "gtk9slice.h"
 #include "gtkpango.h"
 
 typedef struct GtkThemingEnginePrivate GtkThemingEnginePrivate;
@@ -961,15 +962,26 @@ gtk_theming_engine_render_frame (GtkThemingEngine *engine,
   GtkStateFlags flags;
   GdkColor lighter, darker;
   GdkColor *bg_color;
+  Gtk9Slice *slice;
 
-  cairo_save (cr);
   flags = gtk_theming_engine_get_state (engine);
 
-  cairo_set_line_width (cr, 1);
-
   gtk_theming_engine_get (engine, flags,
+                          "border-image", &slice,
                           "background-color", &bg_color,
                           NULL);
+
+  if (slice)
+    {
+      gtk_9slice_render (slice, cr, x, y, width, height);
+      gtk_9slice_unref (slice);
+      gdk_color_free (bg_color);
+      return;
+    }
+
+  cairo_save (cr);
+  cairo_set_line_width (cr, 1);
+
   color_shade (bg_color, 0.7, &darker);
   color_shade (bg_color, 1.3, &lighter);